GtkCssProvider: Parse alpha() symbolic colors.
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 25 Oct 2010 18:44:15 +0000 (20:44 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:38:28 +0000 (15:38 +0100)
The "alpha" symbolic color modifies a passed color's alpha by a factor,
the syntax would accept things like:

background-color: alpha (@bg_color, 0.8);
foreground-color: alpha (shade (@fg_color, 0.8), 0.5);

gtk/gtkcssprovider.c

index a4c773256d6ab296b2393d432681711fd3f174a6..d61a56417a8fe0fd520f1f9d1c828c85f37c01bf 100644 (file)
@@ -1583,12 +1583,19 @@ symbolic_color_parse_str (const gchar  *string,
 
       *end_ptr = (gchar *) end;
     }
-  else if (g_str_has_prefix (str, "shade"))
+  else if (g_str_has_prefix (str, "shade") ||
+           g_str_has_prefix (str, "alpha"))
     {
       GtkSymbolicColor *param_color;
+      gboolean is_shade = FALSE;
       gdouble factor;
 
-      str += strlen ("shade");
+      is_shade = g_str_has_prefix (str, "shade");
+
+      if (is_shade)
+        str += strlen ("shade");
+      else
+        str += strlen ("alpha");
 
       SKIP_SPACES (str);
 
@@ -1629,7 +1636,11 @@ symbolic_color_parse_str (const gchar  *string,
           return NULL;
         }
 
-      symbolic_color = gtk_symbolic_color_new_shade (param_color, factor);
+      if (is_shade)
+        symbolic_color = gtk_symbolic_color_new_shade (param_color, factor);
+      else
+        symbolic_color = gtk_symbolic_color_new_alpha (param_color, factor);
+
       gtk_symbolic_color_unref (param_color);
       (*end_ptr)++;
     }